package nl.memedefense.level;

/**
 * A tile is a base class for a graphical component that is rendered on screen. A tile is basically a square with a
 * picture on it. A group of Tiles forms a level.
 *
 * @author Robin van Breukelen
 */
public abstract class Tile {

    /**
     * Indicates whether or not a player is allowed to build {@link nl.memedefense.tower.Tower}s on this tile.
     *
     * @return boolean indicating if a player can build a {@link nl.memedefense.tower.Tower} on this tile.
     */
    public abstract boolean isBuildable();

    /**
     * Retrieves the horizontal position of this tile on screen.
     *
     * @return int indicating the horizontal position of this tile on screen.
     */
    public abstract int getXCoordinate();

    /**
     * Retrieves the vertical position of this tile on screen.
     *
     * @return int indicating the vertical position of this tile on screen.
     */
    public abstract int getYCoordinate();

}
